\documentclass[a4paper, 14pt]{article}
\usepackage{ctex}
\usepackage{graphicx}
\usepackage{amsmath,amsfonts,amsthm,amssymb}
\usepackage{listings}
\usepackage{subfigure}
\lstset{language=Matlab}%代码语言使用的是matlab
\lstset{breaklines}%自动bai将长的代码行换行排du版
\lstset{extendedchars=false}

\renewcommand{\baselinestretch}{1.25}

%------------setlength----------------%
\setlength{\textwidth}{162mm}
\setlength{\textheight}{250mm}
\setlength{\headheight}{-2cm}
\setlength{\topmargin}{-0.1cm}
\setlength{\oddsidemargin}{-0cm}
\setlength{\evensidemargin}{-0cm}

\setlength{\parskip}{1mm}
\setlength{\unitlength}{1mm}
\setlength{\parindent}{2em}

\title{有限元方法项目作业报告}

\author{上官昊炅 \quad 3180105434}
\date{}

\begin{document}
\maketitle
	
\section{问题简介}
用P1单元完成有限元设计，并计算问题：
\begin{align*}
  -\Delta u = 2sinxsiny，\\
  u|_b = sinxsiny，\\
  (x,y) \in [1,2] \times [1,2]。
\end{align*}

\section{设计方法}
对于该二维问题，我们首先利用easymesh软件对定义域进行网格剖分，得到不规则三角形网格，在每个网格上利用一阶分片线性函数作为基函数，三个自由度分别为三角形的三个顶点，然后对原方程乘以测试函数并积分求其弱解(测试函数实际上取遍所有基函数)，运用散度定律得到一个线性方程组$Au = f$, 之后在每个单元里做数值积分来填充$A$和$f$，最后利用共轭梯度法求解该线性方程组得到计算解$u_h$(h代表网格宽度)，并与真实解进行比较求解L2误差，改变网格宽度并计算误差阶。

\section{计算结果展示}
\subsection{图像展示}
\begin{figure}[!htp] 
	\centering
	\includegraphics[width=8cm]{real.png}
	\caption{真实解}
\end{figure}
\begin{figure*}[!htp]
	\centering
	\subfigure  
	{
          \begin{minipage}{6cm}
            \includegraphics[width=7cm]{h05.png}
            \caption{h = 0.5}
          \end{minipage}
        }                                                                          
	\subfigure 
	{
          \begin{minipage}{6cm}
            \includegraphics[width=7cm]{h025.png}
            \caption{h = 0.25}
          \end{minipage}
        }
\end{figure*}
\begin{figure*}[!htp]
	\centering
	\subfigure  
	{
          \begin{minipage}{6cm}
            \includegraphics[width=7cm]{h0125.png}
            \caption{h = 0.125} 
          \end{minipage}
        }                                                                          
	\subfigure 
	{
          \begin{minipage}{6cm}
            \includegraphics[width=7cm]{h01.png}
            \caption{h = 0.01}
          \end{minipage}
        }
\end{figure*}
\begin{figure*}[!htp]
	\centering
	\subfigure  
	{
          \begin{minipage}{6cm}
            \includegraphics[width=7cm]{h005.png}
            \caption{h = 0.05}
          \end{minipage}
        }                                                                          
	\subfigure 
	{
          \begin{minipage}{6cm}
            \includegraphics[width=7cm]{h0025.png}
            \caption{h = 0.025}
          \end{minipage}                             }
\end{figure*}

\subsection{误差展示}
这里我们计算L2误差：
\begin{align*}
  e &= u - u_h，\\
  \Vert e \Vert_2 &= (\int_\Omega e^2 dx)^{\frac{1}{2}} = (\sum_{i=1}^{n\_ele}\int_{e_i} (u - u_h)^2 dx)^{\frac{1}{2}}，
\end{align*}
其中我们有
\begin{align*}
  \int_{e_i} (u - u_h)^2 dx &= \sum_{l=1}^{n\_quad}\omega_l(u - u_h)^2(x_l)， \\
  u_h(x) &= \sum_{k=1}^{n\_basis}\phi_k(x)u_h^{(k)}。
\end{align*}

当用P1有限元计算该问题时，L2误差
\begin{equation*}
  \Vert e \Vert_2 = O(h^2)。
\end{equation*}

下表为网格宽度和相应的L2误差
\begin{table}[!htp]
  \centering
  \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|}
    \hline
    h & 0.5 & 0.25 & 0.125 & 0.1 & 0.05 & 0.025 \\
    \hline
    L2\_error & 0.0241648 & 0.00671632 & 0.00189399 & 0.00121471 &
                                                                   0.000304804 & 7.61191e-05 \\
    \hline
  \end{tabular}
  \caption{网格宽度和相应的L2误差}
\end{table}

由下图可以看出，L2误差的误差阶为2。
\begin{figure}[!htp]
  \centering
  \includegraphics[width=10cm]{L2.png}
  \caption{log(h)和log(L2\_error)关系图像}
\end{figure}

\section{总结}
随着网格宽度的减小，计算所得的数值解越来越接近真解，同时，通过计算得出计算结果L2误差的误差阶为2。



\end{document}